package com.gray.service;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.gray.common.UploadImage;
import com.gray.dto.ArticleDto;
import com.gray.pojo.Article;
import com.gray.pojo.ArticleSort;
import com.gray.pojo.User;

public interface IArticleService {
	/**
	 * 添加文章
	 */
	public int  addArticle(Article article,UploadImage uploadImage);
	
	/**
	 * 获取用户的分类类别
	 * @param user
	 * @return
	 */
	public ArrayList<ArticleSort> getAllArticleSort(User user);
	
	/**
	 *  删除单个文章分组
	 * @param articleSort
	 * @return
	 */
	public int delArticleSort(ArticleSort articleSort);
	
	/**
	 *  添加分组
	 * @param articleSort
	 * @return
	 */
	public int insertArticleSort(ArticleSort articleSort);
	
	/**
	 *  更新用户分组类别
	 * @param articleSort
	 * @return
	 */
	public int updateArticleSort(ArticleSort articleSort);
	
	/**
	 * 
	 * @param userId  //当前用户
	 * @param currentPage //当前页
	 * @param everyPageNum //每一页的数量
	 * @return Map    page对象和list(article)对象
	 */
	public Map getArticleByUserAndPage(Integer userId,Integer currentPage,Integer everyPageNum);
	
	/**
	 * 根据用户进行文章的删除
	 * @return 删除条数 0 or 1
	 */
	int delArticleByUserAndArticleId(short articleId,Integer UserId);
	
	/**
	 * 根据文章名进行模糊查询
	 * @param articleName
	 * @return List 文章列表
	 */
	Map getArticleByLikeArticleName(String articleName,Integer currentPage,Integer onePageNum);
	
	/**
	 * 获取点击量最高的文章 （分页）
	 * @param currentPage 当前页
	 * @param onePageNum 每一页的数量
	 * @return
	 */
	Map getArticleByArticleClick(Integer currentPage,Integer onePageNum);
	
	/**
	 *返回文章数据 分页  admin
	 * @param UserId
	 * @param currentPage
	 * @param onePageNum
	 * @return
	 */
	Map getArticleDtoByUserAndPage(Integer userId,Integer currentPage,Integer onePageNum);
	
	/**
	 * 删除文章    admin
	 * @param userId
	 * @param articleId
	 * @return
	 */
	int delArticleByUserAndArticleId(Integer userId,Short articleId);
	
	/**
	 * 获取单个文章Dto
	 * @param userId 
	 * @param articleId
	 * @return  ArticleDto
	 */
	ArticleDto getSimpleArticleDtoByUserAndArticleId(Integer userId,Short articleId);
	
	/**
	 * 更新文章  
	 * @param article
	 * @return
	 */
	int updateArticle(Article article,UploadImage uploadImage);
	
	List getArticleByArticleId(short articleId);
	
	/**
	 * 通过板块获取文章 （前台访问页面）
	 * @param SectionId
	 * @param currentPage
	 * @param onePageNum
	 * @return
	 */
	Map getArticleBySectionId(byte SectionId,Integer currentPage,Integer onePageNum);
	
	List selcectCarousel();
}
